One of the hallmarks of modern computers is configurability. A computer can be configured to provide a variety of specific functions simply by attaching various peripheral devices. For example, graphical images can be digitized and stored on a computer by employing a scanner, and a storage device. By adding a printer, the scanned, stored graphical image can be printed. In order to enhance system configurability, a variety of interface standards have been created, which allow conforming devices to be coupled to one another. One such interface is known as the small computer system interface (SCSI).
SCSI (pronounced "scuzzy"), and more particularly SCSI-3 defines both the physical interconnections between compliant devices, and the commands which may pass between them. Devices which comply with the SCSI standard can include direct access devices; sequential access devices; printer devices; processor devices; write once read multiple devices; CD devices; scanner devices; optical memory devices; media changer devices; communication devices; storage array devices; enclosure services devices; and simplified direct-access devices.
In a given computer system, a variety of SCSI compliant devices may be coupled to one another through a SCSI interface. In order to ensure efficient operation of the interconnected SCSI devices, a variety of commands are implemented that establish reservations which may be used to restrict the execution of commands to a given device or a portion thereof. In this manner, the various devices act as both clients and servers to one another such that they are able to share and protect data or resources.
The SCSI-3 standard set implements a type of reservation known as persistent reservations. Such reservations differ from reservations of previous SCSI implementations in that persistent reservations survive through a power-loss condition or reset condition. For example, a storage device in accordance with SCSI-3 may be exclusively reserved for a client such as a host processor. If for some reason the system loses power, upon power-up the storage device will still be exclusively allocated for the host processor. There are generally two types of persistent reservation commands: Persistent Reserve In commands, which are used to obtain information about persistent reservations, and Persistent Reserve Out commands which are used to set various persistent reservations. The use of persistent reservations provides enhanced interoperability of SCSI-devices. However, there exists a need to provide an efficient implementation of persistent reservations in SCSI-compliant devices.